/**
*	@class TextureManager
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __TEXTUREMANAGER_H_INCLUDED__
#define __TEXTUREMANAGER_H_INCLUDED__

//  Library Includes

//  Local Includes
#include "HashTable.h"

//  Macros

//  Forward Declarations
namespace Protein
{
	class Texture2D;
}

//  Types
typedef Protein::HashTable< const char*, Protein::Texture2D* >	TEXTUREMAP;

//  Constants

//  Prototypes

namespace Protein
{

class TextureManager
{
friend class ProteinFramework;
friend class Texture2D;
friend class TextureBase;

	//Member Functions
public:

	Texture2D*	create( const char* szName );
	void		free( const char* szName );

protected: 

private:

	TextureManager(){ m_textureMap = new TEXTUREMAP( 3 ); }
	TextureManager( const TextureManager& ){}
	TextureManager& operator=( const TextureManager& ){}
	~TextureManager();//{}

	//Member Variables
public:

protected: 

private: 

	TEXTUREMAP*				m_textureMap;

};

#include "TextureManager.inl"

}

#endif //__TEXTUREMANAGER_H_INCLUDED__
